import { PriceShowTypeEnum } from '@/enums/activityEnum';
import { IsOnStateEnum, WhetherOrNot } from '@/enums/customFormEnum';
import { LogisticsModeEnum, ProductType, ReviewStatus } from '@/enums/productManage';
import { ProductDisplay, PushShowType } from '@/enums/resourceLeague';

/**
 *  联盟组织列表
 */
export interface MerchanItem {
  // 主键id
  id: number;
  // 参与联盟业务 0 不参与 1参与
  joinFlag: IsOnStateEnum;
  // 组织名称
  merchantName: string;
  // 组织logo
  logoUrl: string;
  // 推入联盟产品数
  productNum: string;
  // 联盟帮售订单数
  salesNum: string;
  // 已推广订单数
  distributionNum: string;
}

/**
 *  联盟组织配置
 */
export interface MerchantConfig {
  // 主键id
  id: number;
  // 是否加入联盟 0 不加入 1加入
  joinFlag: IsOnStateEnum;
  // 限制推入数量 -1 不限制  -正数 推入数量
  productLimit: number;
  // 自动推入选品广场 1 自动 0不推
  autoSquare: WhetherOrNot;
  // 允许推首页
  indexFlag: WhetherOrNot;
  // 平台手续费率
  platformCommission: number;
  // 发布者机构费率
  releaseOrgCommission: number;
  // 分销机构费率
  distributionOrgCommission: number;
  // 分销费者佣金比例
  distributionCommission: number;
}

/** 选择组织穿梭框 */
export interface SelectMerchantItem {
  tenantId: number;
  name: string;
  logoUrl: string;
  // 联盟组织ID
  id: number;
}

/** 产品详情 */
export interface ProductItem {
  // 联盟产品库 id
  id: number;
  // 申请时间
  createTime: string;
  // 产品 id
  productId: number;
  // 产品类型(1-实物产品 2-卡券核销产品 3-虚拟产品)
  productType: ProductType;
  // 产品名称
  productName: string;
  // 产品主图url
  imageUrl: string;
  // 产品最小规格价格
  productMinPrice: number;
  // 产品最大规格价格
  productMaxPrice: number;
  priceShowType: PriceShowTypeEnum;
  // 产品销售数
  totalSalesNum: number;
  // 总库存数
  totalStockNum: number;
  // 物流模式[1:快递;2:无需物流;3:到店核销,4:到店自提]
  logisticsMode: LogisticsModeEnum;
  // 产品分类名称
  productCategoryName: string;
  // 产品来源，组织名称
  shopName: string | null;
  // 组织图片 Url
  shopLogo: string | null;
  // 发布者头像
  userAvatar: string;
  // 发布者名称
  userName: string;
  // 发布者手机
  userPhone: string;


  // 联盟库类型，是否推广到选品广场【0:否：1是】
  pushSelectItem: WhetherOrNot;
  // 精选板块是否可见【0:否：1是】
  choicenessPlate: WhetherOrNot;
  // 联盟库类型，推广可见类型【0:全部；1:部分：2: 全部不可见】
  pushShowType: PushShowType;
  // 关联展示的商户列表
  unionShowTenantLists: Array<{
    // 商户ID
    tenantId: number;
    // 商户名称
    shopName: string;
    // 商户Logo URL
    shopLogo: string;
  }>;
}

/** 产品审核列表 */
export interface ProductReviewItem {
  // 审核记录 id
  id: number;
  // 产品库 id
  productLibId: number;
  // 产品 id
  productId: number;
  // 申请时间
  createTime: string;
  // 审核时间
  reviewTime: string;
  // 审核内容
  reviewContent: string;
  // 申请内容
  applyContent: string;
  // 审核状态(0:待审核;1:审核通过;2:审核不通过)
  reviewStatus: ReviewStatus;
  // 审核人名称
  reviewerName: string;
  // 产品类型(1-实物产品 2-卡券核销产品 3-虚拟产品)
  productType: ProductType;
  // 产品名称
  productName: string;
  // 产品主图url
  imageUrl: string;
  // 产品最小规格价格
  productMinPrice: number;
  // 产品最大规格价格
  productMaxPrice: number;
  // 总库存数
  totalStockNum: number;
  // 物流模式[1:快递;2:无需物流;3:到店核销,4:到店自提]
  logisticsMode: LogisticsModeEnum;
  // 产品分类名称
  productCategoryName: string;
  productCategoryIdsStr: string;
  // 产品来源，组织名称
  shopName: string;
  // 产品来源，组织LOGO
  shopLogo: string;
  userId: number;
  userAvatar: string;
  // 发布者名称
  userName: string;
  userPhone: string;
}

// 该类型描述了一个包含商品推送选项、精选标签、关联商户ID列表以及商品库ID的对象。
export interface ProductPlusConfig {
  // 联盟产品库 id
  productLibId: number;
  // 联盟库类型，是否推广到选品广场【0:否：1是】
  pushSelectItem: WhetherOrNot;
  // 精选板块是否可见【0:否：1是】
  choicenessPlate: WhetherOrNot;
  // 联盟库类型，推广可见类型【0:全部；1:部分：2: 全部不可见】
  pushShowType: PushShowType;
  // 关联的组织ID列表
  tenantIds: number[];
};

/**
 * 联盟基础信息
 */
export interface UnionInfoConfig extends MerchantConfig {
  /**联盟名称 */
  name: string;
}

/**
 * 联盟精选模块-配置
 */
export interface PromotionTemplate {
  // 模版 ID
  id: number;
  // 联盟ID
  unionId: number;
  // 模板名称
  templateName: string;
  // 顶部图片标识
  topImg: string;
  // 背景颜色
  backColor: string;
  // 1-全部组织首页 2-部分组织首页 3-不展示
  promotionMode: 1 | 2 | 3;
  // 组织Ids
  tenantIds: number[];
}

/**
 * 联盟精选模块-分组信息
 */
export interface TemplateGroupItem {
  id?: number;
  // 联盟名称
  name: string;
  //风格类型 1 横向列表 2 宫格列表
  styleType: ProductDisplay;
  // 分组类型 0 普通分组 1 全部产品
  groupType: 0 | 1,
}
